Setting multiple enumeration values

How does one set multiple enumeration values using DXL?
You can't concatenate them (I don't think).

Example:

for object o, o."attribute" needs to take on 2 of 5 possible values, "Version 1" and "Version2".
How do I set it to both?
Thanks!
tlwtheq - Thu Jun 07 12:17:53 EDT 2012

Re: Setting multiple enumeration values
SystemAdmin - Thu Jun 07 12:42:39 EDT 2012

From DXL Help / Multi-value enumerated attributes

The assignment operators += and -= can be used as shown in the following syntax:

attrRef += string s
attrRef -= string s

where attrRef is in one of the following formats:
(Object o).(string attrName)
(Module m).(string attrName)
(Link l).(string attrName)

Operation
Adds or removes an enumerated option from the value of the attribute.
  • Pekka Mäkinen - http://www.softqa.eu/

Re: Setting multiple enumeration values
tlwtheq - Thu Jun 07 12:59:13 EDT 2012

SystemAdmin - Thu Jun 07 12:42:39 EDT 2012
From DXL Help / Multi-value enumerated attributes

The assignment operators += and -= can be used as shown in the following syntax:

attrRef += string s
attrRef -= string s

where attrRef is in one of the following formats:
(Object o).(string attrName)
(Module m).(string attrName)
(Link l).(string attrName)

Operation
Adds or removes an enumerated option from the value of the attribute.

  • Pekka Mäkinen - http://www.softqa.eu/

Here's what worked.

Previously there were 5 attributes, Version1, Version2 Version3, Version 4, Version 5.
They could be set to "Yes", "No", " ". We wanted an enumerated type that could take
on actual values "Version1", "Version2", "Version3", "Version 4", "Version 5",
one or all as appropriate. Default for the enumerated type is " ".

string version = " "
Object o
Module m = current

for o in m do {

version = o."Version1"
if (version == "Yes") {
if (o."Effective""" == " ") {
o."Effective" = "Version1"
}
}
version = o."Version2"
if (version == "Yes") {
if (o."Effective""" == " ") {
o."Effective" = "Version2"
} else {
o."Effective" = o."Effective" "\n" "Version2"
}
}
version = o."Version3"
if (version == "Yes") {
if (o."Effective""" == " ") {
o."Effective" = "Version3"
} else {
o."Effective" = o."Effective" "\n" "Version3"
}
}
version = o."Version4"
if (version == "Yes") {
if (o."Effective""" == " ") {
o."Effective" = "Version4"
} else {
o."Effective" = o."Effective" "\n" "Version4"
}
}
version = o."Version5"
if (version == "Yes") {
if (o."Effective""" == " ") {
o."Effective" = "Version5"
} else {
o."Effective" = o."Effective" "\n" "Version5"
}
}
}

Re: Setting multiple enumeration values
tlwtheq - Thu Jun 07 13:00:32 EDT 2012

tlwtheq - Thu Jun 07 12:59:13 EDT 2012
Here's what worked.

Previously there were 5 attributes, Version1, Version2 Version3, Version 4, Version 5.
They could be set to "Yes", "No", " ". We wanted an enumerated type that could take
on actual values "Version1", "Version2", "Version3", "Version 4", "Version 5",
one or all as appropriate. Default for the enumerated type is " ".


string version = " "
Object o
Module m = current

for o in m do {

version = o."Version1"
if (version == "Yes") {
if (o."Effective""" == " ") {
o."Effective" = "Version1"
}
}
version = o."Version2"
if (version == "Yes") {
if (o."Effective""" == " ") {
o."Effective" = "Version2"
} else {
o."Effective" = o."Effective" "\n" "Version2"
}
}
version = o."Version3"
if (version == "Yes") {
if (o."Effective""" == " ") {
o."Effective" = "Version3"
} else {
o."Effective" = o."Effective" "\n" "Version3"
}
}
version = o."Version4"
if (version == "Yes") {
if (o."Effective""" == " ") {
o."Effective" = "Version4"
} else {
o."Effective" = o."Effective" "\n" "Version4"
}
}
version = o."Version5"
if (version == "Yes") {
if (o."Effective""" == " ") {
o."Effective" = "Version5"
} else {
o."Effective" = o."Effective" "\n" "Version5"
}
}
}

Nuts, I lost the formatting, but you get the idea.

Re: Setting multiple enumeration values
tlwtheq - Thu Jun 07 13:01:50 EDT 2012

tlwtheq - Thu Jun 07 13:00:32 EDT 2012
Nuts, I lost the formatting, but you get the idea.

string version = " "
Object o
Module m = current
 
for o in m do {
 
    version = o."TC2S 5.0.0"
        if (version == "Yes") {
                if (o."Effective""" == " ") {
                        o."Effective" = "TC2S 5.0.0"
                }
        }
        version = o."TC2S 5.0.1"
        if (version == "Yes") {
                if (o."Effective""" == " ") {
                        o."Effective" = "TC2S 5.0.1"
                } else {
                        o."Effective" = o."Effective" "\n" "TC2S 5.0.1"
                }
        }
        version = o."TC2S 6.0"
        if (version == "Yes") {
                if (o."Effective""" == " ") {
                        o."Effective" = "TC2S 6.0"
                } else {
                        o."Effective" = o."Effective" "\n" "TC2S 6.0"
                }
        }
        version = o."TC2S 7.0"
        if (version == "Yes") {
                if (o."Effective""" == " ") {
                        o."Effective" = "TC2S 7.0"
                } else {
                        o."Effective" = o."Effective" "\n" "TC2S 7.0"
                }
        }
        version = o."post-TC2S 5.0.1"
        if (version == "Yes") {
                if (o."Effective""" == " ") {
                        o."Effective" = "post-TC2S 5.0.1"
                } else {
                        o."Effective" = o."Effective" "\n" "post-TC2S 5.0.1"
                }            
        }
}

Re: Setting multiple enumeration values
llandale - Thu Jun 07 13:40:32 EDT 2012

Yes, you can either
  1. set the enumerated value to a whole new value, where each enum is separated with an EOL
    • o.Name = "Value1\nValue3"
  2. set or reset individual enums:
    • o.Name += "Value1"
    • o.Name -= "Vaule2"

-Louie